博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
8.4 注册新用户
阅读量:4098 次
发布时间:2019-05-25

本文共 2875 字,大约阅读时间需要 9 分钟。

 ——————————————————————前言————————————————————————————

本节讲解如何为我们的web程序添加注册新用户的功能。

————————————————————————————————————————————————————

一. 修改|-app/-auth/forms.py

from flask_wtf import FlaskFormfrom wtforms import StringField, PasswordField, SubmitField, ValidationErrorfrom wtforms.validators import DataRequired, Length, Email, Regexp, EqualTofrom ..models import Userclass RegisterForm(FlaskForm):   #注册表单    email = StringField('Email', validators=[ DataRequired(), Length(1, 64), Email() ])   username = StringField('Username', validators=[ DataRequired(), Length(1, 64), Regexp('^[A-Za-z][A-Za-z0-9_.]*$', 0, 'Username must hava only letters, numbers, dots or underscores.') ])    password = PasswordField('Password', validators=[ DataRequired(), EqualTo('password2', 'Password must match.') ])    password2 = PasswordField('Confirm Password', validators=[ DataRequired() ])    submit = SubmitField('register')    def validate_email(self, field):        if User.query.filter_by(email=field.data).first() is not None:           raise ValidationError('Email already registered.')    def validate_username(self, field):        if User.query.filter_by(username=field.data).first() is not None:            raise ValidationError('Username already Register.')
注释:

验证函数:

Regexp:

该字段填写的字符串必须符合第一个参数给定的正则表达式——字母开头, 后面可以是字母数字下划线和点号。

第二个参数是正则表达式的旗标, 不太懂, 也没搜到,默认为0就好了

第三个参数是提醒字符串, 如果该字段的填写值不符合给定的正则表达式, 就会发送提醒。

EqualTo:

因为两次填写的密码必须相同, 所以我们在其中任意一个密码字段中设置该验证函数, 其第一个参数是另一个密码字段的名称, 第二个参数是提醒字符串, 如果两次填写密码不同, 发出提醒。

自定义验证函数:

我们在该脚本定义了两个自定义的验证函数, 自定义验证函数都以validate_开头, 后面紧跟字段名称, 效果跟validators参数中的验证函数一样。

validate_email:

   我们为email字段添加了一个验证函数, 如果数据库已经存在该email, 则向用户发出提醒;

validate_username:

    同上。

二. 修改|-app/-auth/views.py

    我们只要添加一个视图函数用来返回注册表单即可:

@auth.route('/register', methods=['GET', 'POST'])def register():    form = RegisterForm()  #创建表单    if form.validate_on_submit():  #填写的表单数据通过验证函数        u = User(email=form.email.data, username=form.username.data, password=form.password.data)  #创建用户        db.session.commit(u)  #把用户添加到会话        flash('You can now login.')  #提示用户已经可以登录        return redirect(url_for('auth.login'))  #重定向    return render_template('auth/register.html', form=form)

三. 修改|-app/templates

1.auth/login.html——在登录页面添加一个注册页面的链接, 方便创建账号。

{% extends 'base.html' %}{% import 'bootstrap/wtf.html' as wtf %}{% block title %}Flasky - Login{% endblock %}{% block page_content %}
{
{ wtf.quick_form(form) }}

Click here to register

{% endblock %}

#在登录表单下面添加注册页面的链接, 点击以后跳转到注册页面

2.auth/register.html —— 渲染注册表单

{% extends 'base.html' %}{% import 'bootstrap/wtf.html' as wtf %}{% block title %}Flasky - Register{% endblock %}{% block page_content %}
{
{ wtf.quick_form(form) }}{% endblock %}

四. 效果演示

1.启动服务器:

2.用浏览器访问根地址:

3. 点击导航条右侧Sign In, 访问登录页面:

4. 点击登录表单下方链接, 访问注册页面:

5.输入完信息后点击Register提交按钮, 注册成功:

6. 输入完信息后, 点击log_in提交按钮:

登陆成功!

   

你可能感兴趣的文章
那些人生“开挂”的程序员,都在干什么?
查看>>
影响科学圈的那些计算机代码
查看>>
乐视视频 App 图标改为“欠 122 亿”,网友:我在别家分红包,却在你家随份子!...
查看>>
乔布斯18岁求职信拍卖价22.24万美元,值吗?
查看>>
为何程序员总喜欢写技术博客,看完恍然大悟...
查看>>
假如计算机是中国人发明的,那代码应该这么写
查看>>
科技公司最爱的 50 款开源工具,你都用过吗?
查看>>
触目惊心:比特币到底消耗了多少能源?
查看>>
面试官:简历上敢写技术精通?那我就不客气了!
查看>>
如何判断一家互联网公司要倒闭了?
查看>>
想快速上手机器学习?来看下这个 GitHub 项目!
查看>>
GitHub 标星 3.6k,一本开源的深度学习中文教程!
查看>>
9 款你不能错过的 JSON 工具
查看>>
就在昨天,全球 42 亿 IPv4 地址宣告耗尽!
查看>>
200页!分享珍藏很久的Python学习知识手册(附链接)
查看>>
程序员之神
查看>>
4 岁小女孩给 Linux 内核贡献提交
查看>>
推荐几个私藏很久的技术公众号给大家
查看>>
20 个 2020 年软件开发趋势预测
查看>>
王垠受邀面试阿里 P9,被 P10 面跪后网上怒发文,惨打 325 的 P10 赵海平回应了!...
查看>>